package algo3.algocity.vista;

import java.awt.Color;
import java.awt.Graphics;
import java.util.ArrayList;
import java.util.List;

import algo3.algocity.modelo.construibles.EstacionDeBomberos;
import algo3.algocity.modelo.edificios.Residencial;
import algo3.algocity.modelo.interfaces.Construccion;
import algo3.algocity.modelo.interfaces.MegaConstruccion;
import algo3.algocity.modelo.interfaces.MiniConstruccion;
import algo3.algocity.modelo.mapa.Agua;
import algo3.algocity.modelo.mapa.Coordenada;
import algo3.algocity.modelo.mapa.Hectarea;
import algo3.algocity.modelo.mapa.Mapa;

public class EstadoVistaMapaSuperficie implements EstadoVistaMapa {
	
	private static final Color COLOR_DE_FONDO_TIERRA = Color.getHSBColor(8,8,88);
	private static final Color COLOR_DE_FONDO_AGUA = Color.BLUE;
	private static final String Residencial = null;
	private Dibujante dibujante = new Dibujante();
	
	@Override
	public void dibujar(Graphics graphics, Mapa mapa) {

		dibujarTerreno(graphics);
		dibujarAgua(graphics, mapa);
		dibujarGrilla(graphics, mapa);
		dibujarMegaConstrucciones(graphics, mapa);
		dibujarMiniConstruccionesSuperficiales(graphics, mapa);
		dibujarEstacionesDeBomberos(graphics, mapa);
	}

	private void dibujarMegaConstrucciones(Graphics g, Mapa mapa) {
	
		for(Construccion megaConstruccion : mapa.obtenerMegaConstrucciones()){
			
			dibujante.dibujarMega(g,megaConstruccion);
		}
	}
		
	private void dibujarMiniConstruccionesSuperficiales(Graphics g, Mapa mapa){
		
		for(MiniConstruccion miniConstruccion : mapa.obtenerMiniConstrucciones()){
			
			dibujante.dibujarMiniSuperficiales(g,miniConstruccion);
		}
	}

	private void dibujarEstacionesDeBomberos(Graphics g, Mapa mapa){
	
		for(EstacionDeBomberos estacionDebomberos : mapa.obtenerEstacionDeBomberos()){
		
			dibujante.dibujarEstacionesDeBomberos(g,estacionDebomberos);
		}
	}
	
	private void dibujarGrilla(Graphics g, Mapa mapa) {
	
		g.setColor(Color.BLACK);
		
		for(int columna = 0; columna < mapa.obtenerAncho() * ANCHO_DE_COLUMNA; columna += ANCHO_DE_COLUMNA) {
		
			g.drawLine(0, columna, 750, columna);
		}
		
		for(int fila = 0; fila < mapa.obtenerAltura() * ANCHO_DE_FILA; fila += ANCHO_DE_FILA) {
			
			g.drawLine(fila, 0, fila, 750);
		}
	  }

	private void dibujarTerreno(Graphics g) {
		g.setColor(COLOR_DE_FONDO_TIERRA);
		g.fillRect(0, 0, 750, 750);
		g.setColor(Color.BLACK);
		g.drawRect(0, 0, 749, 749);
	}
	
	private void dibujarAgua(Graphics g, Mapa m){
	
		g.setColor(COLOR_DE_FONDO_AGUA);
			g.fillRect(10, 10, 300, 300);
		}

	//main para pruebas
	public static void main(String[] args) {
		
		EstadoVistaMapaSuperficie v = new EstadoVistaMapaSuperficie();
		
	}

}
